************************************************************************************
**********************************BA Abschlussarbeit********************************
************************************Tobias Funke************************************
************************************************************************************

***Bitte A_ReadMe aus Dataverse lesen bzw lokalen Speicherpfad bei work_dir editieren

***Forschungsfrage:
*Welchen Einfluss hat die Infrastruktur auf die politische Einstellung zur AfD?

***Daten:
*GLES 2021 Querschnitt - ZA7702 v1-0-0 (2022-02-10, Pre-Release)
*Thünen-Institut 2022, Raumtypologie und Erreichbarkeiten, zuletzt geprüft am 15.09.2022
*Der Bundeswahlleiter 2021a/2021c/2013, Wahlergebnis und Strukturdaten


************************************************************************************
***Vorbereitung der Datensätze

**Speicher bereinigen
clear all

**Arbeitsverzeichnis: Platzhalter $work_dir 
global work_dir "C:\Speicherort\BA_TobiasFunke"

**Datensatz GLES öffnen
use "$work_dir/C_GLES_ZA7702_v1-0-0.dta"

**Daten Thünen hinzufügen
do "$work_dir/C_Daten_Thuenen.do"

**Daten Bundeswahlleiter hinzufügen 
do "$work_dir/C_Daten_BWL.do"


************************************************************************************
***Zusätzliche ADO installieren
ssc install fre , replace

ssc install estout , replace

ssc install coefplot , replace


************************************************************************************
***Variablen aufbereiten

**Fehlende Werte kodieren
do "$work_dir/C_GLES_ZA7702_missing.do"


*****Strukturebene*****

**AV AfD Struktur
lab var afd "Zweitstimmenergebnis AfD BTW21 je WK"
*check Normalverteilung
hist afd, normal
*weil rechtsschief erfolgt Logarithmierung
cap drop afd_log
gen afd_log = log(afd)
lab var afd_log "Logarithmiertes Zweitstimmenergebnis AfD BTW21 je WK"

**Index Erreichbarkeit
cap drop dist
gen dist = (bad + schule + kkh + opnv + poli)/5
lab var dist "Score zur Erreichbarkeit Infrastruktur"

**Typologie Räume
label define typo 1 "Typo 1" 2 "Typo 2" 3 "Typo 3" 4 "Typo 4" 5 "Typo 5" , add
lab var typo "Raumtypologie"

**Bevölkerungsentwicklung
cap drop popdev
gen popdev = gburt + wander
lab var popdev "Bevoelkerungsentwicklung in WK je 1000 EW"

**Wahlbeteiligung
lab var wbtg "Wahlbeteiligung BTW21 pro WK"

**rechte Parteien BTW2013
lab var npd "Wahlergebnis rechte Parteien BTW2013 pro WK, ohne AfD"

**Anteil AuslaenderInnen WK
lab var auslander "Anteil AuslaenderInnen % pro WK"


*****Individualebene*****

**AV AfD Individual
*check Normalverteilung
hist afd, normal
*durch über 68% sehr negative Meinung zur AfD (1/11) steht Normalverteilung nicht zur Diskussion
* Var q17h wird von GLES übernommen

**Abgehängtheit
cap drop abght
recode q46c (1 = 5 "stimme voll und ganz zu") (2 = 4 "stimme eher zu") (3 = 3 "teils/teils") (4 = 2 "stimme eher nicht zu") (5 = 1 "stimme ueberhaupt nicht zu") , gen(abght)
lab var abght "Subjektiv zu wenig Zugang Infrastruktur"
** nur ggf für Nachtest: Itembatterie der vier Variablen
*Übernahme Var Infrastruktur
*
*Umpolung der anderen drei Einzelvariablen, 1 wenig Zustimmung, 5 viel
cap drop emofinanz
recode q46a (1 = 5 "stimme voll und ganz zu") (2 = 4 "stimme eher zu") (3 = 3 "teils/teils") (4 = 2 "stimme eher nicht zu") (5 = 1 "stimme ueberhaupt nicht zu") , gen(emofinanz)
lab var emofinanz "Subjektiv wenig Aufmerksamkeit Finanzen"
*
cap drop emoarbeit
recode q46b (1 = 5 "stimme voll und ganz zu") (2 = 4 "stimme eher zu") (3 = 3 "teils/teils") (4 = 2 "stimme eher nicht zu") (5 = 1 "stimme ueberhaupt nicht zu") , gen(emoarbeit)
lab var emoarbeit "Subjektiv wenig Anerkennung Arbeit"
*
cap drop emomeinung
recode q46d (1 = 5 "stimme voll und ganz zu") (2 = 4 "stimme eher zu") (3 = 3 "teils/teils") (4 = 2 "stimme eher nicht zu") (5 = 1 "stimme ueberhaupt nicht zu") , gen(emomeinung)
lab var emomeinung "Subjektiv keine Meinungsaeusserung"
*Index der vier Variablen
cap drop abght2
gen abght2 = (emofinanz + emoarbeit + abght + emomeinung)/4
lab var abght2 "Index der Abgehaengtheit"

**Vertrauen 
cap drop trust
gen trust = (q79a + q79b + q79c + q79d)/4
lab var trust "Index Vertrauen in politische Institutionen"

**Kompositionseffekte & cultural backlash
cap drop cult
recode q27a (1 = 5 "stimme voll und ganz zu") (2 = 4 "stimme eher zu") (3 = 3 "teils/teils") (4 = 2 "stimme eher nicht zu") (5 = 1 "stimme ueberhaupt nicht zu") , gen(cult)
lab var cult "Deutsche Kultur"

**Bildung
cap drop bildung
recode d7 (1 2 9 = 1 "Bildung niedrig") (3 6 = 2 "Bildung mittel") (4 5 = 3 "Bildung hoch") , gen(bildung)
lab var bildung "Schulabschluss"

**Geschlecht 
cap drop weiblich
recode d1 (1 = 0 "maennlich") (2 = 1 "weiblich") , gen(weiblich)
lab var weiblich "Weiblich"

**Alter
*zuerst String-Variable ändern
cap drop bjahr
generate bjahr = real(d2a)
cap drop bjahr2
encode d2a, gen(bjahr2)
fre bjahr2
replace bjahr = 1931 if bjahr2 == 1
*
cap drop age
gen age = 2021 - bjahr
recode age (16/29 = 1) (30/44 = 2) (45/59 = 3) (60/90 = 4) 
label define age 1 "16-29" 2 "30-44" 3 "45-59" 4 "60+" , add
lab var age "Alter in Jahren"

**Nativismus Nationale Identität
cap drop nati
generate nati = q37
lab var nati "Subjektive Einschaetzung links-rechts 1-11"

**Populismus
*Umpolung der Einzelvariablen, 1 wenig Zustimmung, 5 viel
*
cap drop popkompr
recode q51a (1 = 5 "stimme voll und ganz zu") (2 = 4 "stimme eher zu") (3 = 3 "teils/teils") (4 = 2 "lehne eher ab") (5 = 1 "lehne voll und ganz ab") , gen(popkompr)
lab var popkompr "Einstellung Kompromiss als Prinzipienverrat"
*
cap drop popvolk
recode q51b (1 = 5 "stimme voll und ganz zu") (2 = 4 "stimme eher zu") (3 = 3 "teils/teils") (4 = 2 "lehne eher ab") (5 = 1 "lehne voll und ganz ab") , gen(popvolk)
lab var popvolk "Einstellung Volksentscheide"
*
cap drop popmdb
recode q51c (1 = 5 "stimme voll und ganz zu") (2 = 4 "stimme eher zu") (3 = 3 "teils/teils") (4 = 2 "lehne eher ab") (5 = 1 "lehne voll und ganz ab") , gen(popmdb)
lab var popmdb "Umsetzung Volkswillen MdB"
*
cap drop popelit
recode q51d (1 = 5 "stimme voll und ganz zu") (2 = 4 "stimme eher zu") (3 = 3 "teils/teils") (4 = 2 "lehne eher ab") (5 = 1 "lehne voll und ganz ab") , gen(popelit)
lab var popelit "Volk vs Elite"
*
cap drop popbsr
recode q51e (1 = 5 "stimme voll und ganz zu") (2 = 4 "stimme eher zu") (3 = 3 "teils/teils") (4 = 2 "lehne eher ab") (5 = 1 "lehne voll und ganz ab") , gen(popbsr)
lab var popbsr "Politik besser durch Volk"
*
cap drop poptalk
recode q51f (1 = 5 "stimme voll und ganz zu") (2 = 4 "stimme eher zu") (3 = 3 "teils/teils") (4 = 2 "lehne eher ab") (5 = 1 "lehne voll und ganz ab") , gen(poptalk)
lab var poptalk "Politik redet zu viel"
*
*Index der sechs Variablen
cap drop populismus
gen populismus = (popkompr + popvolk + popmdb + popelit + popbsr + poptalk)/6
lab var populismus "Einstellung Populismus"


******************************************************************************************
***Deskriptive Analyse


*****Strukturebene*****

*Details AV
sum afd, detail
sum afd_log, detail
bys ostwest: sum afd , detail
bys typo: sum afd , detail

*Verteilung der Raumtypen unter den 164 Wahlkreisen sowie Ost/West
fre typo
fre typo if ostwest==0
fre typo if ostwest==1
*
graph bar (count) lfdn , over(typo) by(ostwest) horizontal ytitle("Raumtypologie befragter Personen")

*Durchschnittswerte Erreichbarkeit nach Typo
bys typo: sum dist , detail
sum dist , detail
bys ostwest: sum dist , detail

*****Individualebene*****
sum q17h, detail
fre q17h
bys ostwest: sum q17h , detail
bys ostwest: fre q17h


************************************************************************************
***Regressionsanalyse

**Strukturebene

*Reg1 Struktur West mit Kontrollvariablen
reg afd_log dist i.typo popdev wbtg npd auslander if ostwest==1 [aw=w_ipfwes] , eform(exp(b)) beta
estimates store m1

*Vorschub Voraussetzungsprüfung unter allen Variablen: Multikollinearität?
estat vif

*Reg2 Struktur West ohne Kontrollvariablen
reg afd_log dist i.typo popdev wbtg if ostwest==1 & e(sample) [aw=w_ipfwes] , eform(exp(b)) beta
estimates store m2

*Reg3 Struktur Ost mit Kontrollvariablen
reg afd_log dist i.typo popdev wbtg npd auslander if ostwest==0 [aw=w_ipfost] , eform(exp(b)) beta
estimates store m3

*Reg4 Struktur Ost ohne Kontrollvariablen
reg afd_log dist i.typo popdev wbtg if ostwest==0 & e(sample) [aw=w_ipfost] , eform(exp(b)) beta
estimates store m4

*Vergleich der Modelle
estimates table m1 m2 m3 m4 , b se

*Erstellung Word-Datei
esttab m1 m2 m3 m4 using "$work_dir/RegStrukturResult.rtf" , replace cells("b(star fmt(2) label(B))" "se(par fmt(2) label((SE)))")


******************************************************************************************
***Voraussetzungsprüfungen Strukturebene

**Normalverteilung?
hist afd_log, normal

*Homoskedastizität? Hetereoskedastizität?
rvfplot, yline(0)

*Multikollinearität?
*Ergebnis bereits als Einschub nach Reg1, damit alle Variablen des Modells kontrolliert werden

**Hauptkomponentenanalyse KMO des Index Erreichbarkeit
*
*dist
pca bad schule kkh opnv poli
estat kmo


******************************************************************************************
***Grafik zu Effekten Strukturebene
coefplot (m1, label(West)) (m3, label(Ost)), drop(_cons) xline(0) xtitle(" " "Zweitstimmen AfD") legend(pos(12)) title("Effekt nach West/Ost")


************************************************************************************
***Regressionsanalyse Individualebene

*Verwendung q17h, subjektive Meinung zur AfD als Skalometer

*Reg5 West mit Kontrollvariablen
reg q17h abght trust cult i.bildung i.weiblich i.age nati populismus if ostwest==1 [aw=w_ipfwes], beta  
estimates store m5

*Vorschub Voraussetzungsprüfung unter allen Variablen: Multikollinearität?
estat vif

*Reg6 West ohne Kontrollvariablen
reg q17h abght trust if ostwest==1 & e(sample) [aw=w_ipfwes], beta 
estimates store m6

*Reg7 Ost mit Kontrollvariablen
reg q17h abght trust cult i.bildung i.weiblich i.age nati populismus if ostwest==0 [aw=w_ipfost], beta  
estimates store m7

*Reg8 Ost ohne Kontrollvariablen
reg q17h abght trust if ostwest==0 & e(sample) [aw=w_ipfost], beta  
estimates store m8

*Vergleich der Modelle
estimates table m5 m6 m7 m8 , b se

*Erstellung Word-Datei
esttab m5 m6 m7 m8 using "$work_dir/RegIndividualResult.rtf" , replace cells("b(star fmt(2) label(B))" "se(par fmt(2) label((SE)))")


******************************************************************************************
***Voraussetzungsprüfungen Individualebene

*Homoskedastizität? Hetereoskedastizität?
rvfplot, yline(0)

*Multikollinearität?
*Ergebnis bereits als Einschub nach Reg5, damit alle Variablen des Modells kontrolliert werden

**Hauptkomponentenanalyse KMO der Indizes
*
*trust
pca q79a q79b q79c q79d
estat kmo
*populismus
pca popkompr popvolk popmdb popelit popbsr poptalk
estat kmo
*Nachtest abght2 
pca emofinanz emoarbeit abght emomeinung 
estat kmo

******************************************************************************************
***Grafik zu Effekten Individualebene
coefplot (m5, label(West)) (m7, label(Ost)), drop(_cons) xline(0) xtitle(" " "Meinung AfD") legend(pos(12)) title("Effekt nach West/Ost")


************************************************************************************
***Zusatztest zum Index der Abgehängtheit

*Reg9 West Index mit Kontrollvariablen
reg q17h abght2 cult i.bildung i.weiblich i.age nati populismus if ostwest==1 [aw=w_ipfwes], beta  
estimates store m9

*Reg10 Ost Index mit Kontrollvariablen
reg q17h abght2 cult i.bildung i.weiblich i.age nati populismus if ostwest==0 [aw=w_ipfost], beta  
estimates store m10

*Vergleich der Modelle
estimates table m9 m10 , b se

*Erstellung Word-Datei
esttab m9 m10 using "$work_dir/RegIndexZusatz.rtf" , replace cells("b(star fmt(2) label(B))" "se(par fmt(2) label((SE)))")

